package io.github.frailty9.crserver.dso.service;

import com.mybatisflex.core.paginate.Page
import io.github.frailty9.crserver.dto.ResourcePublishDto
import io.github.frailty9.crserver.model.Resource
import org.noear.solon.lang.Nullable
import java.time.LocalDate

/**
 * ResourceService
 */
interface ResourceService {

    /**
     * 发布新资源
     * @param uid 用户id
     * @param resourcePublishDto 资源发布信息
     */
    fun publish(uid: Long, resourcePublishDto: ResourcePublishDto)

    /**
     * 根据结束日期查找所有存活的资源id
     * @param endDate 结束日期
     * @return 资源id列表
     */
    fun findResourcesActiveBefore(endDate: LocalDate): List<Long>

    /**
     * 查询存活的资源分页信息
     * @param current 当前页码
     * @param size 每页数量
     * @return 资源分页信息
     */
    fun getActiveResourceDtoPage(current: Number = 1, size: Number = 5) : Page<Resource>

    /**
     * 获取指定资源信息
     * @param id 资源id
     * @return 资源信息
     */
    @Nullable
    fun getById(id: Long):  Resource?
}
